1. Field of the Invention
This invention relates to the updating and synchronization of information between a client and a server. More specifically, this invention relates to the updating and synchronization of information between clients and servers on the world wide web through the use of applets.
2. Background
The Internet is a client/server system. A "client" is the computer that you use to access the Internet. When you log onto the World Wibe Web portion of the Internet, you view "web pages" that are stored on a remote "server" computer. Sometimes it is possible for a client to make a change or enter data on a web page. A problem with the Internet is that the whole page needs to be resent from the server to the client with the changed or new data. This is slow and cumbersome. Some background on the Internet helps provide an understanding of this problem.
The Internet is a worldwide network of interconnected computers. An Internet client accesses a computer on the network via an Internet provider. An Internet provider is an organization that provides a client (e.g., an individual or other organization) with access to the Internet (via analog telephone line or Integrated Services Digital Network line, for example). A client can, for example, download a file from or send an electronic mail message to another computer/client using the Internet. An Intranet is an internal corporate or organizational network that uses many of the same communications protocols as the Internet. The terms Internet, World Wide Web (WWW), and Web as used herein includes the Intranet as well as the Internet.
The components of the WWW include browser software, network links, and servers. The browser software, or browser, is a user-friendly interface (i.e., front-end) that simplifies access to the Internet. A browser allows a client to communicate a request without having to learn a complicated command syntax, for example. A browser typically provides a graphical user interface (GUI) for displaying information and receiving input. Examples of browsers currently available include Netscape Navigator and Internet Explorer.
A browser displays information to a client or user as pages or documents. A language called Hypertext Markup Language (HTML) is used to define the format for a page to be displayed in the browser. A Web page is transmitted to a client as an HTML document. The browser executing at the client parses the document and produces and displays a Web Page based on the information in the HTML document. Consequently, the HTML document defines the Web Page that is rendered at runtime on the browser.
HTML is a structural language that is comprised of HTML elements that are nested within each other. An HTML document is a text file in which certain strings of characters, called tags, mark regions of the document and assign special meaning to them. These regions are called HTML elements. Each element has a name, or tag. An element can have attributes that specify properties of the element. Blocks or components include unordered list, text boxes, check boxes, and radio buttons, for example. Each block has properties such as name, type, and value. The following provides an example of the structure of an HTML document:
&lt;HTML&gt; &lt;HEAD&gt; .... element(s) valid in the document head &lt;/HEAD&gt; &lt;BODY&gt; .... element(s) valid in the document body &lt;/BODY&gt; &lt;/HTML&gt;
Each HTML element is delimited by the pair of characters "&lt;" and "&gt;". The name of the HTML element is contained within the delimiting characters. The combination of the name and delimiting characters is referred to as a marker, or tag. Each element is identified by its marker. In most cases, each element has a start and ending marker. The ending marker is identified by the inclusion of another character, "/" that follows the "&lt;" character.
HTML is a hierarchical language. With the exception of the HTML element, all other elements are contained within another element. The HTML element encompasses the entire document. It identifies the enclosed text as an HTML document. The HEAD element is contained within the HTML element and includes information about the HTML document. The BODY element is contained within the HTML. The BODY element contains all of the text and other information to be displayed.
Information servers maintain the information on the WWW and are capable of processing a client request. HyperText Transfer Protocol (HTTP) is the standard protocol for communication with an information server on the WWW. HTTP has communication methods that allow clients to request data from a server and send information to the server.
To submit a request, the client contacts the HTTP server and transmits the request to the HTTP server. The request contains the communication method requested for the transaction (e.g., GET an object from the server or POST data to an object on the server). The HTTP server responds to the client by sending a status of the request and the requested information. The connection is then terminated between the client and the HTTP server.
A client request therefore, consists of establishing a connection between the client and the HTTP server, performing the request, and terminating the connection. The HTTP server does not retain any information about the request after the connection has been terminated. HTTP is, therefore, a stateless protocol. That is, a client can make several requests of an HTTP server, but each individual request is treated independent of any other request. The server has no recollection of any previous request. The server does not retain state from a prior request.
An addressing scheme is employed to identify Internet resources (e.g., HTTP server, file or program). This addressing scheme is called Uniform Resource Locator (URL). A URL contains the protocol to use when accessing the server (e.g., HTTP), the Internet domain name of the site on which the server is running, the port number of the server, and the location of the resource in the file structure of the server.
The WWW uses a concept known as hypertext. Hypertext provides the ability to create links within a document to move directly to other information. To activate the link, it is only necessary to click on the hypertext link (e.g., a word or phrase). The hypertext link can be to information stored on a different site than the one that supplied the current information. A URL is associated with the link to identify the location of the additional information. When the link is activated, the client's browser uses the link to access the data at the site specified in the URL.
If the client request is for a file, the HTTP server locates the file and sends it to the client. An HTTP server also has the ability to delegate work to Common Gateway Interface (CGI) programs. The CGI specification defines the mechanisms by which HTTP servers communicate with gateway programs. A gateway program is referenced using a URL. The HTTP server activates the program specified in the URL and uses CGI mechanisms to pass program data sent by the client to the gateway program. Data is passed from the server to the gateway program via command-line arguments, standard input, or environment variables. The gateway program processes the data, generates an HTML document, and returns the HTML document as its response to the server using CGI (via standard input, for example). The server forwards the HTML document to the client using the HTTP. In this respect, although the gateway programs have the ability to generate HTML, the document displayed by the browser remains a static document. Thus, each time information is requested from the server, a completely new HTML document containing the information is created, transmitted to the client, and loaded/rendered on the client's browser.
The WWW is often used to exchange information between the client (browser) and the server. In many circumstances, the server maintains a database and the client may desire to search, update or edit the database. In this respect, information is managed on the browser that the client is editing. Due to the fact that the client and server are often maintained on separate and distinct computer systems, changes made on the browser need to be reflected on the server and if information on the server changes, the browser needs to reflect those changes; in other words, the information between the client and server needs to be synchronized.
HTML includes a FORM element that provides the ability to create a fill-in form for the client. An HTML document containing a FORM element permits the user to enter information. The user enters the information through the use of a limited number of FORM components: checkboxes; radio boxes; pull-down lists; text windows; and menus. Additional components cannot be created using an HTML FORM element. The information entered through the FORM components is transmitted as a single unit to a gateway program on the HTTP server. In this manner, FORMs can be used to input information. However, FORM elements may not be placed inside a HEADING element, inside another FORM, or inside character emphasis markups (i.e. STRONG or EM). As a result, all information input into a FORM must be transmitted in one unit. Thus, several FORMs must be created in order to transfer information to several different gateway programs. In this manner, if the gateway program merely requires one parameter, an entire FORM must be created to accept the parameter from the user. In addition, the FORM element does not provide functionality for synchronizing data between a client and a server.
The information collected on a form is sent to a gateway program in NAME/VALUE pairs, where NAME is the value assigned to the name attribute of the element, and VALUE is the value assigned by the user's input. For example, if the user named a pull-down list "CITY" and selected the city of "HOUSTON" from the pull-down list, the NAME/VALUE pair sent to the gateway program is "CITY/HOUSTON". In this manner, all of the information collected from the user is transmitted to the gateway program. However, the FORM element does not provide the ability to transmit the name-value pairs from the server back to the client. Additionally, the FORM element does not identify the action to be taken by the server or the gateway program.
As described above, the gateway program (which has to be specifically designed to accept the name/value pairs from the client) performs the desired actions or methods and generates an HTML document that is transmitted back to the client (with the results of the desired action, if any). Since the server is stateless, to preserve any of the name/value pairs originally transmitted to the server, the server or CGI program must retransmit the name/value pairs back to the client in an &lt;INPUT TYPE="hidden"&gt; element, within the returned HTML document (which may contain a new FORM), as a record of the state of the client-server transaction. Therefore, each time information needs to be updated on the client's browser due to changes made during execution of the gateway program, an HTML definition that defines the Web page (including any name/value pairs within a new FORM) must be transmitted to the client for rendering on the client's display. The transmission and rendering of an entire page is time consuming and undesirable, especially when only a small portion of the page has changed. As a result, information transmitted through using the current capabilities is not efficient and cannot be displayed quickly on the client and/or server.